perm filename CVTIO.FAI[2,LCS]1 blob sn#153756 filedate 1975-04-04 generic text, type T, neo UTF8
00100	;**** UDP PORTIONS ARE FOR STANFORD DISK SYSTEM(USER-DISK PACK)
00200	;  MTA1 ITEMS ARE USED WITH "TAPMUS" (ETC.), TAPE TRANSFER PROGS.
00300		TITLE FSTUDP ; ********* NOV 4,70 *********
00400		INTERNAL INTUDP,TOUDP,FINUDP,TOTAPE,FINTAP,BACKSP
00500		INTERNAL GETTAP,INTAPE,FSTMUS,PUTMUS,FINMUS
00600		INTERNAL MTA1,INMTA1
00700		INTERNAL GETFIL,PUTFIL,FASTIN,FASTOUT,FINFIL
00800		EXTERNAL CVTALC
00900	; USE UDFAST.DMP[1,3] TO PLAY FROM UDP
01000	
01100		FILUDP←←1		;SET TO 0 FOR NON-FILE STRUCTURED UDP
01200					;SET TO 1 FOR FILE STRUCTURED UDP
01300		MAXBLK←←=4998		;=4999 IS USED BY SYSTEM FOR PASSWORD
01400	
01500		CH←12
01600		CH2←11
01650		CH3←13
01700		BLKS←←=1
01800	
01900	DEFINE ERROR (MSG)
02000	<	JSA 16,.ERROR
02100		JUMP [ASCIZ/MSG/
02200	]
02300	>
02400	
02500	REGS:	BLOCK 20
02600	
02700	
02800	;CALL PUTFIL(<FILE>)
02900	
03000	PUTFIL:	0
03100		MOVE 0,@0(16)
03200		MOVEM FILNAM
03300		JSA 16,INTFIL
03400		MOVE 0,[SIXBIT/DMD/]
03500		MOVEM 0,DIR+1
03600		SETZM DIR+2
03700		SETZM DIR+3
03800		ENTER CH2,DIR
03900		0
04000		JRA 16,1(16)
04100	
04200	;CALL FASTOUT(<ARRAY>,<NO. OF WORDS>)
04300	
04400	FASTOUT: 0
04500		HRRZ 0,0(16)
04600		SUBI 0,1
04700		MOVEM 0,COM
04800		MOVN 0,@1(16)
04900		HRLM 0,COM
05000		OUTPUT CH2,COM
05100		STATZ CH2,740000
05200		0
05300		JRA 16,2(16)
05400	
05500	
05800	
05900	;CALL FINFIL
06000	
06100	FINFIL:	0
06200		CLOSE CH2,0
06300		STATZ CH,740000
06400		0
06500		RELEASE CH2,0
06600		JRA 16,0(16)
06700	
06800	;CALL GETFIL(<FILE>)
06900	
07000	GETFIL:	0
07100		MOVE 0,@0(16)
07200		MOVEM 0,FILNAM
07300		JSA 16,INTFIZ
07400		MOVE 0,[SIXBIT/DMD/]
07500		MOVEM 0,DIR+1
07600		JSA 16,LKUP
07700		SKIPA
07800		JRST GETF3
07900		SETZM DIR+1
08000		JSA 16,LKUP
08100		0
08200	GETF3:	JRA 16,1(16)
08300	
08400	LKUP:	0
08500		SETZM DIR+2
08600		SETZM DIR+3
08700		LOOKUP CH3,DIR
08800		JRA 16,0(16)
08900		JRA 16,1(16)
09000	
09100	INTFIZ:	0	;INITS DSK FOR INPUT
09200		MOVEI REGS
09300		BLT REGS+3
09400		INIT CH3,17
09500		SIXBIT/DSK/
09600		0
09700		ERROR <CAN'T INIT DSK!>
09800		JRST INTF4
09900	
10000	DIR:	BLOCK 4
10100	
10200	
10300	;CALL FASTIN(<ARRAY>,<NO. WORDS>)
10400	
10500	FASTIN:	0
10600		HRRZ 0,0(16)
10700		SUBI 0,1
10800		MOVEM 0,COM
10900		MOVN 0,@1(16)
11000		HRLM 0,COM
11100		INPUT CH3,COM
11200		STATZ CH3,740000
11300		0
11400		JRA 16,2(16)
11450	
11500	;CALL MTA1
11600	MTA1:	0	;CH2, READS MTA1.
11700		INIT CH2,617
11800		SIXBIT/MTA1/
11900		0
12000		ERROR <CAN'T INIT MTA1>
12100		JRA 16,0(16)
12200	;CALL INMTA1(<ARRAY>,<NO. OF WORDS>)
12300	INMTA1:	0
12400		HRRZ 0,0(16)
12500		SUBI 0,1
12600		MOVEM 0,COM
12700		MOVN 0,@1(16)
12800		HRLM 0,COM
12900		INPUT CH2,COM
13000		STATZ CH2,740000
13100		ERROR <MAG TAPE READ ERROR>
13200		JRA 16,2(16)
13300	
13400	;CALL PUTMUS(<FILE>)
13500	
13600	PUTMUS:	0	;USES INTMUS,FSTMUS,FINMUS, CH2. WRITES ON 2314. 
13700		MOVE 0,@0(16)
13800		MOVEM 0,FILNAM
13900		JSA 16,INTFIL
14010		MOVE 0,DIR
14020		CAME 0,[SIXBIT/MUSIC/]	;IS FILE NAME "MUSIC"
14030		JRST .+3		;NO -- DO NORMAL ENTER
14040		JSA 16,CVTALC		;YES -- DO EXTENDED ENTER TO
14050		JRA 16,1(16)		;GET 1000 BLOCKS
14060		MOVE 0,[SIXBIT/MUS/]
14100		MOVEM 0,DIR+1
14200		SETZM DIR+2
14300		SETZM DIR+3
14400		ENTER CH2,DIR
14500		ERROR <ENTER FAILED>
14600		JRA 16,1(16)
14700	
14800	;CALL FSTMUS(<ARRAY>,<NO. OF WORDS>)
14900	
15000	FSTMUS:	0
15100		HRRZ 0,0(16)
15200		SUBI 0,1
15300		MOVEM 0,COM
15400		MOVN 0,@1(16)
15500		HRLM 0,COM
15600		OUTPUT CH2,COM
15700		STATZ CH2,740000
15800		ERROR <WRITE ERROR>
15900		JRA 16,2(16)
16000	
16100	;CALL INTUDP
16200	
16300	INTUDP:	0	;USES TOUDP, FINUDP, CH2. WRITES ON UDP.
16400		INIT CH2,17
16500		SIXBIT/UDP/
16600		0
16700		ERROR <CAN'T INIT UDP>
16800	IFE FILUDP,<
16900		MOVEM BLKNUM
17000		MOVEI 1
17100		EXCH BLKNUM
17200	>
17300	IFN FILUDP,<
17400		IN CH2,[IOWD 40,UDPBUF
17500			0]
17600		CAIA
17700		ERROR <CAN'T READ UDP BITMAP>
17800		SKIPN 1,UDPBUF+20	;IS THERE A POINTER TO SCRATCH AREA
17900		MOVEI 1,1		;NO, START AT BLOCK 1
18000		MOVEM 1,BLKNUM		;SET BLOCK NUMBER
18100	>
18200		ENTER	CH2,[0
18300			0
18400			0
18500			0]
18600		ERROR <WRONG PASSWORD, PLEASE MOUNT CORRECT UDP>
18700		JRA 16,0(16)
18800	
18900	INTFIL:	0	;INITS DSK 
19000		MOVEI REGS
19100		BLT REGS+3
19200		INIT CH2,17
19300		SIXBIT/DSK/
19400		0
19500		ERROR <CAN'T INIT DSK!>
19600	INTF4:	MOVE 0,FILNAM#
19700		MOVEM 0,FN#
19800		MOVE 1,[POINT 7,FN]
19900	INTF3:	MOVE 2,[POINT 6,DIR]
20000		SETZM DIR
20100		MOVEI 3,5
20200	INTF1:	ILDB 0,1
20300		CAIN 0," "
20400		JRST INTF2
20500		SUBI 0,40
20600		IDPB 0,2
20700		SOJG 3,INTF1
20800	INTF2:	HRLZI REGS
20900		BLT 3
21000		JRA 16,0(16)
21100	
21200	;CALL TOTAPE(<ARRAY>,<NO.OF WORDS>)  WRITES ON MAGTAPE
21300	
21400	TOTAPE:	0
21500		HRRZ 0,0(16)
21600		SUBI 0,1
21700		MOVEM 0,COM
21800		MOVN 0,@1(16)
21900		HRLM 0,COM
22000		OUTPUT CH,COM
22100		STATZ CH,740000
22200		ERROR <MAG TAPE WRITE ERROR>
22300		JRA 16,2(16)
22400	
22500	;CALL GETTAP
22600	
22700	GETTAP:	0	;USES INTAP OR TOTAPE, CH.  READS OR WRITES MTA0.
22800		INIT CH,617
22900		SIXBIT/MTA0/
23000		0
23100		ERROR <CAN'T INIT MTA0>
23200		JRA 16,0(16)
23300	
23400	;CALL INTAPE(<ARRAY>,<NO.OF WORDS>)  READS MAGTAPE
23500	
23600	INTAPE:	0
23700		HRRZ 0,0(16)
23800		SUBI 0,1
23900		MOVEM 0,COM
24000		MOVN 0,@1(16)
24100		HRLM 0,COM
24200		INPUT CH,COM
24300		STATZ CH,740000
24400		ERROR <MAG TAPE READ ERROR>
24500		JRA 16,2(16)
24600	
24700	;CALL TOUDP(<ARRAY>,<NO. OF WORDS>)
24800	
24900	TOUDP: 0
25000		HRRZ 0,0(16)
25100		SUBI 0,1
25200		MOVEM 0,COM1
25300		MOVN 0,@1(16)
25400		HRLM 0,COM1
25500		MOVE 0,BLKNUM
25600		CAILE 0,MAXBLK-BLKS+1
25700		ERROR <UDP FULL!>
25800		OUTPUT CH2,COM1
25900		MOVEI 0,BLKS
26000		ADDM 0,BLKNUM
26100		STATZ CH2,740000
26200		ERROR <UDP WRITE ERROR>
26300		JRA 16,2(16)
26400	
26500	COM:	OCT 0,0
26600	COM1:	0
26700	BLKNUM:	0
26800	
26900	;CALL FINUDP(WORD COUNT)
27000	
27100	FINUDP:	0
27200		MOVE 0,@ 0(16)
27300	IFE FILUDP,<
27400		MOVEM 0,[FOO:	0
27500				0	]
27600		OUTPUT CH2,[IOWD 40,FOO
27700			0 ]
27800		CAIA
27900	>
28000	IFN FILUDP,<
28100		IN CH2,[IOWD 40,UDPBUF
28200			0]
28300		CAIA
28400		ERROR <ERROR IN READING UDP BITMAP!>
28500		MOVEM 0,UDPBUF+21
28600		OUT CH2,[IOWD 40,UDPBUF
28700			0]
28800		JRST FINMUS+1
28900		ERROR <ERROR IN WRITING UDP BITMAP!>
29000	>
29100	;CALL FINMUS
29200	FINMUS:	0
29300		CLOSE CH2,4
29400		STATZ CH2,740000
29500		ERROR <ERROR AFTER CLOSE>
29600		RELEASE CH2,0
29700		JRA 16,0(16)
29800	
29900	FINTAP:	0
30000		CLOSE CH,0
30100		STATZ CH,740000
30200		ERROR <MAG TAPE ERROR AFTER CLOSE>
30300		RELEASE CH,0
30400		JRA 16,0(16)
30500	
30600	BACKSP:	0
30700		INIT CH,617
30800		SIXBIT/MTA0/
30900		0
31000		ERROR <CAN'T INIT MTA0>
31100		MTAPE CH,7
31200		JRA 16,0(16)
31300	
31400	.ERROR:	0
31500		OUTSTR [ASCIZ/?
31600	/]				;MAKE SURE HE CAN SEE HIS ERROR
31700		OUTSTR @(16)		;OUTPUT ERROR MESSAGE
31800		CALLI 1,12		;LET USER CONTINUE
31900		JRA 16,1(16)
32000	UDPBUF:	BLOCK 40
32100	;END
33000	;	TITLE	NORM	;DEB, 11/13/69
33100	
33200	;	CALL NORM(ARRAY,SIZE,FACTOR)
33300	; UNPACKS 18-BIT SMPLS, NORMALIZES, REPACKS AS 12-BIT SMPLS.
33400	; ---- 3K OF 18-BIT BECOMES 2K OF 12-BIT
33500	;****** BE SURE TO SET FACTOR FOR 9-BIT SO MAXAMP IS NOT >255.
33600	
33700	
33800		INTERNAL  NORM
33900	
34000	X	←	2	;LOOP AND INDEX
34100	T	←	3	;BASE OF IBOTT
34200	
34300	
34400	NORM:	0
34500		HRR X,0(16)
34600		MOVN T,@1(16)
34700		HRL X,T
34800		HRR T,X
34900		HRLI T,441400	;FOR 12-BIT.  USE 441100 FOR 9-BIT
35000		MOVE 4,@2(16)
35100	;;FOR STANFORD ONLY	FIX 4,212000
35200	; NEXT IS EXPORT FIX (TO N10:)
35300		FSC	4,21
35400		MULI	4,400
35500		TSC	4,4
35600		EXCH	4,5
35700		ASH	4,-243(5)
35800	N10:	HLL 0(2)
35900		MUL 4
36000		IDPB T
36100		HRL 0(2)
36200		MUL 4
36300		IDPB T
36400		AOBJN X,N10
36500		JRST 3(16)
36600		0
36700		ANDCBM 4,-6	; THESE ARE THE CONSTANTS
36800		ANDCBI 10,-3
36900	
37000		END